This invention is related in general to networks and more specifically relates to systems and methods for managing or controlling bandwidth allotment in a network device, such as a switch or router.
Network devices, such as switches and routers, are employed in various demanding applications, including the Internet and Virtual Private Networks (VPNs). Such applications often demand efficient devices that optimize resource usage, such as bandwidth usage.
Systems for efficiently using device resources are particularly important in network tunneling applications, where additional bandwidth requirements complicate resource management. For the purposes of the present discussion, tunneling may be any transmission of private data through a public network.
Private networks, such as Virtual Private Networks (VPNs), employ tunneling methods to send private data over a public network. Tunneling methods may involve encapsulating private data so that routers in a public network are unaware that the data is associated with a private network. Private data is insulated and associated with private protocol information within packets employed by the public network so that the private protocol information appears to the public network as data.
Various tunneling protocols, such as Point-to-Point Tunneling Protocol (PPTP) or Generic Route Encapsulation (GRE), may facilitate securely encapsulating private data to facilitate transmission over a public network. Tunneling protocols are often employed to send data in Internet-based VPNs. For the purposes of the present discussion, a VPN may be a private network that employs a public network, such as the Internet, to connect remote sites or users.
To encapsulate a packet, tunneling protocols may add an outer tunnel header. Network routers and/or switches examine the header to determine how to route the header through a network. Conventionally, a router or switch examines the outer header of a packet to determine how to route or switch the packet. Routers and switches may also modify packet headers. Examples of common header modifications include stripping, adding, replacing, rewriting, and swapping outer tunnel headers.
Packets that need to be switched or routed after modification of a header are often recirculated passed through the switch or router again in a process called recirculation. Packets that are passed through a switch plural times are called recirculated packets. Other data or packets, such as data or packets exchanged with devices outside of the switch, are called external-link data or packets.
For the purposes of the present discussion, the term traffic may represent the flow of packets or the packets themselves. Hence, the flow of recirculated packets may be called recirculation traffic, and the flow of external-link packets may be called external-link traffic. Furthermore, the terms traffic and packets may be employed interchangeably herein. Bandwidth used to accommodate recirculation traffic at a certain recirculation rate is called recirculation bandwidth or internal bandwidth. Bandwidth used to accommodate external-link traffic, i.e., the flow of external-link packets, at a given external-link rate is called external-link bandwidth or external bandwidth. Used switch bandwidth is the sum of the external link bandwidth and the recirculation bandwidth.
In certain situations, packet recirculations consume switch bandwidth that is required for other operations, such as forming external links via external switch ports. The switch or router is said to be oversubscribed when the switch or router lacks sufficient bandwidth to accommodate all bandwidth demands including recirculated bandwidth and external-link bandwidth demands.
In certain applications, some recirculation ports in an oversubscribed switch are treated like external ports, i.e., recirculation bandwidth and external-link bandwidth is pooled or equally prioritized, so that any excess bandwidth previously reserved for recirculation may be readily employed to accommodate external connections. Unfortunately, in these applications, large memory buffers are required to accommodate bursts of traffic for both the external links and recirculation ports.
Alternatively, recirculation traffic is serviced at lower priority than external-link traffic so that allotted recirculation bandwidth decreases as external-link traffic demands increase. Unfortunately, in cases of sustained oversubscription, the recirculation traffic is dropped after the full switch bandwidth is consumed. If the external link bandwidth consumes all of the switch bandwidth, internal recirculation bandwidth throughput, and consequently tunnel-traffic throughput, ceases.